diff --git a/board/amcc/yucca/cmd_yucca.c b/board/amcc/yucca/cmd_yucca.c
index e698b20..bd42c5d 100644
--- a/board/amcc/yucca/cmd_yucca.c
+++ b/board/amcc/yucca/cmd_yucca.c
@@ -33,8 +33,6 @@
 static int setBootStrapClock(cmd_tbl_t *cmdtp, int incrflag,
 		int flag, int argc, char *argv[]);
 
-extern int cmd_get_data_size(char* arg, int default_size);
-
 /* ------------------------------------------------------------------------- */
 int do_evb440spe(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
diff --git a/common/cmd_i2c.c b/common/cmd_i2c.c
index 91bf25b..ef3928e 100644
--- a/common/cmd_i2c.c
+++ b/common/cmd_i2c.c
@@ -127,7 +127,6 @@
 
 static int
 mod_i2c_mem(cmd_tbl_t *cmdtp, int incrflag, int flag, int argc, char *argv[]);
-extern int cmd_get_data_size(char* arg, int default_size);
 
 /*
  * Syntax:
diff --git a/common/cmd_itest.c b/common/cmd_itest.c
index ce98872..9e77fa9 100644
--- a/common/cmd_itest.c
+++ b/common/cmd_itest.c
@@ -64,8 +64,6 @@
 
 #define op_tbl_size (sizeof(op_table)/sizeof(op_table[0]))
 
-extern int cmd_get_data_size(char* arg, int default_size);
-
 static long evalexp(char *s, int w)
 {
 	long l, *p;
diff --git a/common/cmd_mem.c b/common/cmd_mem.c
index d0a6ca8..672218b 100644
--- a/common/cmd_mem.c
+++ b/common/cmd_mem.c
@@ -37,35 +37,6 @@
 #endif
 #include <watchdog.h>
 
-#if defined(CONFIG_CMD_MEMORY)		\
-    || defined(CONFIG_CMD_I2C)		\
-    || defined(CONFIG_CMD_ITEST)	\
-    || defined(CONFIG_CMD_PCI)		\
-    || defined(CONFIG_CMD_PORTIO)
-
-int cmd_get_data_size(char* arg, int default_size)
-{
-	/* Check for a size specification .b, .w or .l.
-	 */
-	int len = strlen(arg);
-	if (len > 2 && arg[len-2] == '.') {
-		switch(arg[len-1]) {
-		case 'b':
-			return 1;
-		case 'w':
-			return 2;
-		case 'l':
-			return 4;
-		case 's':
-			return -2;
-		default:
-			return -1;
-		}
-	}
-	return default_size;
-}
-#endif
-
 #if defined(CONFIG_CMD_MEMORY)
 
 #ifdef	CMD_MEM_DEBUG
diff --git a/common/cmd_pci.c b/common/cmd_pci.c
index 8968701..b2aa833 100644
--- a/common/cmd_pci.c
+++ b/common/cmd_pci.c
@@ -35,8 +35,6 @@
 #include <asm/io.h>
 #include <pci.h>
 
-extern int cmd_get_data_size(char* arg, int default_size);
-
 unsigned char	ShortPCIListing = 1;
 
 /*
diff --git a/common/cmd_portio.c b/common/cmd_portio.c
index a06cac0..c88fcd5 100644
--- a/common/cmd_portio.c
+++ b/common/cmd_portio.c
@@ -30,8 +30,6 @@
 #include <common.h>
 #include <command.h>
 
-extern int cmd_get_data_size (char *arg, int default_size);
-
 /* Display values from last command.
  * Memory modify remembered values are different from display memory.
  */
diff --git a/common/command.c b/common/command.c
index 861796d..aca57b2 100644
--- a/common/command.c
+++ b/common/command.c
@@ -654,3 +654,27 @@
 }
 
 #endif
+
+#ifdef CMD_DATA_SIZE
+int cmd_get_data_size(char* arg, int default_size)
+{
+	/* Check for a size specification .b, .w or .l.
+	 */
+	int len = strlen(arg);
+	if (len > 2 && arg[len-2] == '.') {
+		switch(arg[len-1]) {
+		case 'b':
+			return 1;
+		case 'w':
+			return 2;
+		case 'l':
+			return 4;
+		case 's':
+			return -2;
+		default:
+			return -1;
+		}
+	}
+	return default_size;
+}
+#endif
diff --git a/include/command.h b/include/command.h
index 4a27e97..f92383d 100644
--- a/include/command.h
+++ b/include/command.h
@@ -78,6 +78,15 @@
 
 typedef	void	command_t (cmd_tbl_t *, int, int, char *[]);
 
+#if defined(CONFIG_CMD_MEMORY)		\
+    || defined(CONFIG_CMD_I2C)		\
+    || defined(CONFIG_CMD_ITEST)	\
+    || defined(CONFIG_CMD_PCI)		\
+    || defined(CONFIG_CMD_PORTIO)
+#define CMD_DATA_SIZE
+extern int cmd_get_data_size(char* arg, int default_size);
+#endif
+
 #endif	/* __ASSEMBLY__ */
 
 /*
